<!doctype html>
Script changing col's width, whether via the width attribute on the col
element, or setting width:500px via css, should work.
<table border="1">
    <colgroup span="3">
        <col id="colForAttribute" />
        <col />
        <col />
    </colgroup>
    <tbody>
    <tr>
        <td>col 1 row 1</td>
        <td>col 2 row 1</td>
        <td>col 3 row 1</td>
    </tr>
    <tr>
        <td>col 1 row 2</td>
        <td>col 2 row 2</td>
        <td>col 3 row 3</td>
    </tr>
    </tbody>
</table>
<table border="1">
    <colgroup span="3">
        <col id="colForStyle" />
        <col />
        <col />
    </colgroup>
    <tbody>
    <tr>
        <td>col 1 row 1</td>
        <td>col 2 row 1</td>
        <td>col 3 row 1</td>
    </tr>
    <tr>
        <td>col 1 row 2</td>
        <td>col 2 row 2</td>
        <td>col 3 row 3</td>
    </tr>
    </tbody>
</table>
<script>
  document.body.offsetTop;
  colForAttribute.width = "500px";
  colForStyle.style.width = "500px";
</script>
